<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>去重的核心知识</title>
  </head>
  <body>
    <script>
      // 简单类型的去重可以直接使用set对象进行实现
      let arr = [1, 1, 9, 6, 3, 5, 4];
      //   const newArr = [...new Set(arr)];
      //   console.log(newArr);
      // 复杂类型的去重往往需要更多的处理
      let arr2 = [
        4,
        5,
        63,
        3,
        3,
        { id: 23, name: "io", age: 18 },
        { id: 23, name: "io", age: 18 },
      ];
      //   let newArr = [...new Set(arr2)];
      //   console.log(newArr);
      //无法使用set去重复杂数据类型的数组；方法一，转成JSON字符，然后再转回来
      let arrMiddle = arr2.map((item) => {
        return JSON.stringify(item);
      });
      let newArr = new Set(arrMiddle);
      //   set对象上没有map方法，使用Array.from() 静态方法从可迭代或类数组对象创建一个新的浅拷贝的数组实例，这样就可以使用map方法。
      newArr = Array.from(newArr).map((item) => {
        return JSON.parse(item);
      });
      console.log(newArr);

      
      function setRepetion (arr){
        let arrMiddle=arr.map((item) => {
        return JSON.stringify(item);
         });
        let newArr=new Set(arrMiddle);
        newArr = Array.from(newArr).map((item) => {
        return JSON.parse(item);
      });
        return newArr 
      }
    </script>
  </body>
</html>
